package com.impress.commons.vo;


import io.swagger.annotations.ApiModelProperty;

/**
 * 操作结果，带有返回的业务数据
 * 
 * @param <T> 操作完成后的业务数据
 * @author Wangyi
 * @since 2016年6月12日
 */
public class ResultResponse<T> extends Response {

	private static final long serialVersionUID = -6394556731977143569L;

	private static final ResultResponse<Object> EMPTY_OK_RESULT = new ResultResponse<Object>(null);

	@ApiModelProperty(value = "业务数据")
	private T data;

	/**
	 * 有业务数据的成功操作结果
	 * 
	 * @param data
	 * @return
	 */
	public static final <T> ResultResponse<T> ok(T data) {
		return new ResultResponse<T>(data);
	}

	/**
	 * 无业务数据的成功操作结果
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static final <T> ResultResponse<T> ok() {
		return (ResultResponse<T>) EMPTY_OK_RESULT;
	}

	/**
	 * 
	 */
	public ResultResponse(T data) {
		super();
		this.data = data;
	}

	/**
	 * 获取自定义业务数据
	 * 
	 * @return
	 */
	public T getData() {
		return data;
	}

	/**
	 * 设置自定义业务数据
	 * 
	 * @param data 自定义业务数据
	 */
	public void setData(T data) {
		this.data = data;
	}
}
